The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices, and have widespread usage in many different applications. Computers perform their functions by transferring and manipulating data at high speed. Thus, data transfer is a fundamental function accomplished in every computer. In a computer system there may be many places where data may reside. If data is to be read from a first device and written to a second device, the first device is referred to herein as the data source, and the second device is referred to herein as the data target. For example, in a data transfer from Random Access Memory (RAM) to a hard disk drive, the RAM is the data source and the hard disk drive is the data target. Similarly, in a data transfer between a hard disk drive and a tape drive unit, the hard disk drive is the data source and the tape drive unit is the data target. The term data source as used herein includes any and all devices that are a part of a computer system or that may be coupled to a computer system by any means from which data may be read. In a similar manner, the term data target as used herein includes any and all devices that are a part of a computer system of that may be coupled to a computer system by any means to which data may be written.
Recent years have seen rapid growth in network computing, especially on the Internet. Network computing gives rise to more complex data transmission problems, since a user that needs to transfer data to another user on the network may not know the specific platform or protocol the other user is using or expects to see. Some network protocols such as Transmission Control Protocol/Internet Protocol (TCP/IP) and File Transfer Protocol (FTP) provide ways for different types of computers to interact and transfer data. However, known methods for transferring data within a computer system or across a connection between computer systems have significant limitations. For example, while FTP provides a uniform protocol for sending and receiving data, a software application that can transmit in FTP must be running on the data source and a software application that can receive and understand FTP must be running on the data target for the transfer to occur. Each FTP software application must be tailored to the specific computer system (i.e., platform) that it runs on, and must have a knowledge of system-specific parameters. When a new device is developed that needs to be included as either a data source or a data target (or both), a new application must be developed that will allow the new device to communicate with other devices.
Various software tools have been used to automate data transfers. However, prior art software tools are written to implement a specific data transfer protocol on a specific platform. Although these tools perform similar functions, their user interfaces are completely different. The problem of special and incompatible tools becomes readily apparent in the context of a software build, where a computer system must interact with many different data sources and targets to be configured with the correct software before the computer system is shipped to a customer. A computer system may need to access data on numerous different devices using numerous different connection types and numerous different protocols. Each different combination of device/connection type/protocol will generally have a different software tool. Thus, an agent (whether machine or human) that manages the software build process must have intimate knowledge relating to the details of each needed data transfer, and must make the data transfer perform correctly. When a new type of transfer is needed, then either a new tool must be developed or an existing tool must be updated to accommodate the new transfer. As updates to tools accumulate, tools become very difficult to maintain and debug and they lose all commonality, evolving into completely unique tools that perform only their intended purpose.
With the proliferation of networks and, in particular, the Internet, the need for better mechanisms for transferring data within a computer system and across different computer systems becomes more apparent and more acute. Without a mechanism that can be readily customized and extended to accommodate new data sources, new data targets, and new protocols in a computer system, the rate of developing computer software to accommodate new data transfer environments will be impaired.